package br.com.sgh.arquitetura.dao;


/**
 * <p>
 * EntidadePersistenteAbstrata
 * </p>
 * <p>
 * Descrição: implementação base para entidade.
 * </p>
 * <br>
 * <b>Empresa:</b> Chesf - Companhia Hidro Elétrica do São Francisco
 * 
 * @author rafael.rodrigues
 * @version 1.0
 */
public abstract class EntidadeAbstrata implements Entidade {

	private static final long serialVersionUID = -4242411713985359960L;

	/**
	 * @see java.lang.Object#toString()
	 */
	@Override
	public String toString() {
		return getClass().getSimpleName() + "[id=" + getIdentificador() + "]";
	}

	/**
	 * @see java.lang.Object#equals(java.lang.Object)
	 */
	@Override
	public boolean equals(Object obj) {
		if (this == obj) {
			return true;
		}

		if (!(getClass().isInstance(obj))) {
			return false;
		}

		Entidade outro = (Entidade) obj;
		return this.getIdentificador() == null && outro.getIdentificador() == null || this.getIdentificador() != null
				&& this.getIdentificador().equals(outro.getIdentificador());
	}
	
	/**
	 * @see java.lang.Object#hashCode()
	 */
	@Override
	public int hashCode() {
		if (this.getIdentificador() == null) {
			return 0;
		}
		
		return this.getIdentificador().hashCode();
	}
}